package com.ruoyi.system.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.common.core.domain.entity.SysCourt;

/**
 * 法院管理 数据层
 *
 * @author ruoyi
 */
public interface SysCourtMapper
{
    /**
     * 查询法院管理数据
     *
     * @param court 法院信息
     * @return 法院信息集合
     */
    public List<SysCourt> selectCourtList(SysCourt court);

    /**
     * 根据角色ID查询法院树信息
     *
     * @param roleId 角色ID
     * @param courtCheckStrictly 法院树选择项是否关联显示
     * @return 选中法院列表
     */
    public List<Long> selectCourtListByRoleId(@Param("roleId") Long roleId, @Param("courtCheckStrictly") boolean courtCheckStrictly);

    /**
     * 根据法院ID查询信息
     *
     * @param courtId 法院ID
     * @return 法院信息
     */
    public SysCourt selectCourtById(Long courtId);

    /**
     * 根据ID查询所有子法院
     *
     * @param courtId 法院ID
     * @return 法院列表
     */
    public List<SysCourt> selectChildrenCourtById(Long courtId);

    /**
     * 根据ID查询所有子法院（正常状态）
     *
     * @param courtId 法院ID
     * @return 子法院数
     */
    public int selectNormalChildrenCourtById(Long courtId);

    /**
     * 是否存在子节点
     *
     * @param courtId 法院ID
     * @return 结果
     */
    public int hasChildByCourtId(Long courtId);

    /**
     * 查询法院是否存在用户
     *
     * @param courtId 法院ID
     * @return 结果
     */
    public int checkCourtExistUser(Long courtId);

    /**
     * 校验法院名称是否唯一
     *
     * @param courtName 法院名称
     * @param parentId 父法院ID
     * @return 结果
     */
    public SysCourt checkCourtNameUnique(@Param("courtName") String courtName, @Param("parentId") Long parentId);

    /**
     * 新增法院信息
     *
     * @param court 法院信息
     * @return 结果
     */
    public int insertCourt(SysCourt court);

    /**
     * 修改法院信息
     *
     * @param court 法院信息
     * @return 结果
     */
    public int updateCourt(SysCourt court);

    /**
     * 修改所在法院正常状态
     *
     * @param courtIds 法院ID组
     */
    public void updateCourtStatusNormal(Long[] courtIds);

    /**
     * 修改子元素关系
     *
     * @param courts 子元素
     * @return 结果
     */
    public int updateCourtChildren(@Param("courts") List<SysCourt> courts);

    /**
     * 删除法院管理信息
     *
     * @param courtId 法院ID
     * @return 结果
     */
    public int deleteCourtById(Long courtId);
}
